#/usr/bin/perl
<<DOC; 
JANVIER 2018
 usage : perl parcours-arborescence-fichiers repertoire-a-parcourir rubrique
 Par exemple : perl parcours-arborescence-fichiers-2018.pl 2017 3208
 Le programme prend en entrée le nom du répertoire contenant les fichiers à traiter et le "nom" de la rubrique à traiter
DOC

#-----------------------------------------------------------
my $rep="$ARGV[0]";
my $rubrique="$ARGV[1]"; #avec exemple : 3208
my %redondant;
open(FILEOUT, ">:encoding(utf8)", "sortie_$rubrique.txt");
close FILEOUT;
open(FILEOUT2, ">:encoding(utf8)", "sortie_$rubrique.xml");
print FILEOUT2 '<?xml version="1.0" encoding="UTF-8"?>';
close FILEOUT2;
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
#----------------------------------------
&parcoursarborescencefichiers($rep);	# on lance la récursion.... et elle se terminera après examen de toute l'arborescence
#----------------------------------------
exit;
#----------------------------------------------
sub parcoursarborescencefichiers {
    my $path = shift(@_);
    opendir(DIR, $path) or die "can't open $path: $!\n";
    my @files = readdir(DIR);
    closedir(DIR);
    foreach my $file (@files) {
		next if $file =~ /^\.\.?$/;
		$file = $path."/".$file;
		if (-d $file) {
			print "<NOUVEAU REPERTOIRE> ==> ",$file,"\n";
			&parcoursarborescencefichiers($file);	#recurse!
			print "<FIN REPERTOIRE> ==> ",$file,"\n";
		}
		if (-f $file) {
            if ($file =~ m/$rubrique.+\.xml$/) {
                print "<",$i++,"> ==> ",$file,"\n";
                my $ensemble="";
                open(FILEIN, "<:encoding(utf8)", $file);
                open(FILEOUT, ">>:encoding(utf8)", "sortie_$rubrique.txt");
				open(FILEOUT2, ">>:encoding(utf8)", "sortie_$rubrique.xml");
                while (my $ligne=<FILEIN>) {
                    chomp $ligne;
                    $ensemble = $ensemble . $ligne ;
                }
                while ($ensemble =~ m/<item>.*?<title>(.+?)<\/title>.*?<description>(.+?)<\/description>.*?<\/item>/g){
                    my $title = $1;
                    my $description=$2;
                    if (!exists $redondant{$title})
                        {
                        $redondant{$title}=1;
                        my ($titre_propre,$description_propre) = &nettoyage ($title,$description);
                        print FILEOUT "TITRE : $titre_propre\n";
                        print FILEOUT "DESCRIPTION : $description_propre\n";
						print FILEOUT2 "\n<titre>$titre_propre</titre>";
						print FILEOUT2 "\n<description>$description_propre</description>"
                        }
                }
                close FILEIN;
                close FILEOUT;
            }
			
		}
    }
}
#----------------------------------------------

sub nettoyage {
    my $var1 = shift(@_);
    my $var2 = shift(@_);
    $var1=~s/&lt;.+?&gt;//g;
	$var1=~s/&#38;#39;/'/g;
	$var1=~s/&#38;#34;/"/g;
	$var1=~s/\\xE9/é/g;
	$var1=~s/&#233;/é/g;
	$var1=~s/&#234;/ê/g;
	$var1=~s/\\xE0/à/g;
	$var1=~s/\\xE8/è/g;
	$var1=~s/\\xE7/ç/g;
	$var1=~s/\\xEA/ê/g;
	$var1=~s/\\xE2/â/g;
	$var1=~s/\\xF4/ô/g;
    $var2=~s/&lt;.+?&gt;//g;
	$var2=~s/&#38;#39;/'/g;
	$var2=~s/&#38;#34;/"/g;
	$var2=~s/\\xE9/é/g;
	$var2=~s/&#234;/ê/g;
	$var2=~s/&#233;/é/g;
	$var2=~s/\\xE0/à/g;
	$var2=~s/\\xE8/è/g;
	$var2=~s/\\xE7/ç/g;
	$var2=~s/\\xEA/ê/g;
	$var2=~s/\\xE2/â/g;
	$var2=~s/\\xF4/ô/g;
    return $var1,$var2 ;
}